namespace hyperionnet;

// A priority value of -1 clears all priorities
table Register {
  origin:string (required);
  priority:int;
}

table RawImage {
  data:[ubyte];
  width:int = -1;
  height:int = -1;
}

union ImageType {RawImage}

// Either RGB or RGBA data can be transferred
table Image {
  data:ImageType (required);
  duration:int = -1;
}

table Clear {
  priority:int;
}

table Color {
  data:int = -1;
  duration:int = -1;
}

union Command {Color, Image, Clear, Register}

table Request {
  command:Command (required);
}

root_type Request;
